package com.lowcodeai.workflow;

import com.lowcodeai.workflow.model.WorkflowDefinition;
import com.lowcodeai.workflow.model.WorkflowInstance;
import com.lowcodeai.workflow.model.WorkflowContext;
import com.lowcodeai.workflow.model.WorkflowResult;

import java.util.List;

/**
 * 工作流引擎接口
 * 负责工作流的执行和管理
 * 
 * @author LowCodeAI
 * @since 1.0.0
 */
public interface WorkflowEngine {
    
    /**
     * 部署工作流定义
     */
    String deployWorkflow(WorkflowDefinition definition);
    
    /**
     * 启动工作流实例
     */
    WorkflowInstance startWorkflow(String workflowId, WorkflowContext context);
    
    /**
     * 执行工作流实例
     */
    WorkflowResult executeWorkflow(String instanceId);
    
    /**
     * 暂停工作流实例
     */
    void pauseWorkflow(String instanceId);
    
    /**
     * 恢复工作流实例
     */
    void resumeWorkflow(String instanceId);
    
    /**
     * 终止工作流实例
     */
    void terminateWorkflow(String instanceId);
    
    /**
     * 获取工作流实例状态
     */
    WorkflowInstance getWorkflowInstance(String instanceId);
    
    /**
     * 获取工作流定义
     */
    WorkflowDefinition getWorkflowDefinition(String workflowId);
    
    /**
     * 删除工作流定义
     */
    void deleteWorkflow(String workflowId);
    
    /**
     * 获取工作流执行历史
     */
    List<WorkflowInstance> getWorkflowHistory(String workflowId);
} 